//package com.apcc4m.sfpushbatch.listener;
//
//import java.util.HashSet;
//import java.util.Iterator;
//import java.util.Set;
//
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//import org.quartz.JobExecutionContext;
//import org.quartz.Trigger;
//import org.quartz.Trigger.CompletedExecutionInstruction;
//import org.quartz.TriggerListener;
//
//public class OneByOneTriggerListener implements TriggerListener {
//
//	private final Log logger = LogFactory.getLog(this.getClass());
//
//	private static final String MY_NAME = "oneByOneTriggerListener";
//
//	private Set<String> currentRunningJobSet;
//
//	public OneByOneTriggerListener(){
//		currentRunningJobSet = new HashSet<String>();
//	}
//
//	@Override
//	public String getName() {
//		return MY_NAME;
//	}
//
//	/**
//	 * trigger完成
//	 */
//	@Override
//	public void triggerComplete(Trigger arg0, JobExecutionContext context, CompletedExecutionInstruction arg2) {
////		String name = context.getJobDetail().getDescription();
//
//		logger.info("### triggerComplete called name =" + getName());
//		currentRunningJobSet.remove(getName());
//	}
//
//	/**
//	 * trigger触发
//	 */
//	@Override
//	public void triggerFired(Trigger arg0, JobExecutionContext arg1) {
////		logger.info("### Trriger fired");
//	}
//
//	 /**
//     * trigger错过触发
//     */
//	@Override
//	public void triggerMisfired(Trigger arg0) {
//	}
//
//	/**
//	 * 在 TriggerListener 的方法 vetoJobExecution() 中返回 true，就意味着否绝本次 Job(实际为 Trigger) 的执行，因为这个监听方法是在 Job 的 execute() 方法这前执行的。
//	 */
//	@Override
//	public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) {
////		String name = context.getJobDetail().getDescription();
//
//		logger.info("### vetoJobExecution =" + getName());
//
//		Iterator<String> it = currentRunningJobSet.iterator();
//		while(it.hasNext()){
//			logger.info("### hash = " + it.next());
//		}
//
//		if (currentRunningJobSet.contains(getName())) {
//			logger.info("### Trriger canceled");
//			return true;
//		} else {
//			currentRunningJobSet.add(getName());
//			logger.info("### set added " + getName());
//			return false;
//		}
//	}
//
//}
